package com.robot.common.utils;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

/**
 * 内存缓存自动清理
 */
public class CaptchaCacheWithGuava {
    private static final LoadingCache<String, String> cache = CacheBuilder.newBuilder()
            .maximumSize(20) // 缓存最大容量
            .expireAfterWrite(5, TimeUnit.MINUTES) // 写入后10分钟过期
            .build(
                    new CacheLoader<String, String>() {
                        @Override
                        public String load(String key) {
                            // 这里返回null，因为我们不希望通过load方法加载验证码
                            // 验证码的加载应该在调用put方法时显式进行
                            return null;
                        }
                    }
            );

    // 私有构造函数，防止实例化
    private void CaptchaCache() {}

    // 添加验证码到缓存
    public static void putCaptcha(String key, String captcha) {
        cache.put(key, captcha);
    }

    // 获取验证码
    public static String getCaptcha(String key) {
        return cache.getIfPresent(key);
    }

    // Guava Cache自动处理过期，无需手动移除
}
